起動できないEC2インスタンス内部の問題を調査する方法
困っていた内容
EC2インスタンスが起動できなくなりました。インスタンスのステータスチェックを確認したところ、「インスタンスステータスチェックの失敗」の状況であることがわかりました。
インスタンス内部に問題がある可能性があるため、OSやファイルシステムに問題がないかを確認する必要がありますが、EC2インスタンスが起動できないためログインができません。
起動不可となったEC2インスタンスの内部を調査するための方法はありますか?
どう対応すればいいの?
何らかの問題によりインスタンスが起動できない/ログインができない場合、当該EC2インスタンスにアタッチされているEBSを別のEC2インスタンスへアタッチすることで、調査が可能となる場合があります。
実施手順
この手順は、下記の前提において進めます。
- インスタンスのステータスチェックに失敗したインスタンスがある
- 上記のインスタンスとは別に、既に起動済みでログイン可能な調査用インスタンスがある
- OSはAmazon Linux 2である ※それ以外のOSの場合は、コマンドを適宜読み替える必要があります。
ステータスチェックに失敗しているインスタンスを停止させる
ボリュームをデタッチするために、当該インスタンスを停止させる必要があります。
EC2インスタンスのステータスを確認すると、[1/2のステータスチェックに合格しました]のメッセージと警告マークが表示されています。
マネジメントコンソールの画面から、[アクション]-[インスタンスの状態]-[停止]を行います。
EBSをデタッチする
インスタンスの状態が[Stopped]になったことが確認できたら、EBSをデタッチします。
インスタンスの[説明]より、ルートデバイスのEBS IDを確認します。
[ルートデバイス]のパスをクリックすると、EBS IDが確認できます。
このIDは調査用インスタンスにアタッチする際に必要になるため、メモしておきましょう。
EBS IDをクリックすると、[ボリューム]の画面に移行します。
表示されているボリュームを選択した状態で、[アクション]-[ボリュームのデタッチ]を実行します。
状態が[in-use]から[available]になり、[アタッチ済み情報]にインスタンスIDが表示されなくなります。
起動済みの別のインスタンスにEBSをアタッチする
あらかじめ、調査用のEC2インスタンスのインスタンスIDをメモしておきます。
起動されている調査用のEC2インスタンスに、先ほどデタッチしたEBSをアタッチします。
[アクション]-[ボリュームのアタッチ]を実行します。
[インスタンス]欄では、メモしておいた調査用のEC2インスタンスIDを選択します。
[デバイス]欄は、今回はデフォルトのままアタッチを行います。
[アタッチ]を実行します。
状態が[available]から[in-use]に切り替わったことを確認します。
調査用インスタンスにボリュームをマウントする
OSの操作でボリュームをマウントし、アタッチしたEBSを利用可能にします。
先ほど設定したデバイスへのリンクを確認します。
$ll /dev/ | grep sdf lrwxrwxrwx 1 root root 4 x月 xx 14:49 sdf -> xvdf lrwxrwxrwx 1 root root 5 x月 xx 14:49 sdf1 -> xvdf1
ディスクのパーティションを確認します。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part
「xvdf1」がdisk「xvdf」のパーティションであることがわかりました。
マウントポイントを作成し、ボリュームをマウントします。
$ sudo mkdir /mnt/ebs $ sudo mount /dev/xvdf1 /mnt/ebs
エラーでマウントが実行できない時
UUIDの重複によるエラーで、マウントを行うコマンドが実行できない時場合があります。
$ sudo mount /dev/xvdf1 /mnt/ebs mount: /mnt/ebs: wrong fs type, bad option, bad superblock on /dev/xvdf1, missing codepage or helper program, or other error.
この場合は、UUIDの重複を無視することでマウントが可能になります。
このコマンドは、トラブルシュートのために一時的にEBSをマウントする際の措置としての利用を推奨します。
$ sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/ebs
参考情報
インスタンスのステータスチェック - Amazon Elastic Compute Cloud
ログインできないec2インスタンスを調査する | Developers.IO
Amazon EBSマウント時の「wrong fs type, bad option, bad superblock on…」というエラーを解決する方法を教えてください | Developers.IO